<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // 回调函数 (callback)
    // 把一个函数作为参数传入到另一个函数中,让它在另一个函数中执行  => 用户可以根据自己的需要传入函数(自定义执行的内容) => 让其在另一个的函数中执行

    // 注意:
    // 被传入的函数第一没有执行,只是被形参接收 => 只有在另一个函数中通过形参调用才会执行

    // setInterval(function(){},1000)

    // var list = [1,4,7,2,5,8,3,6,9];
    // list.forEach(function(){})


    // 了解回调函数   => 先熟悉函数嵌套 

    // function add(a,b){
    //     // return 1 + 2;
    //     return a + b;
    // }

    // function doSomeThing(){
    //     // 函数中声明了 sing dance两个函数 => 供内部调用 => 想在函数内部执行其他内容,不行 (函数也是定死的 => 想把函数变成可变的)
    //     function sing(){
    //         console.log("唱歌");
    //     }
    //     let dance = function(){
    //         console.log("跳舞");
    //     }
    //     sing();
    //     dance();
    // }


    // 函数也是一个特殊的对象(引用类型) 

   /*  function doSomeThing(callback){  // callback形参 -> 接收实际参数  
        // 形参引用该函数内存地址 => callback调用 => 执行了传入的函数

        console.log(callback,typeof callback);
        if(callback && typeof callback == "function"){ // callback需要传入一个函数
            callback();   // 调用了该函数
        }
    }

    // 将函数作为实际参数传入 -> 被形参接收(形参引用该函数内存地址)
    doSomeThing(function(){
        console.log("测试函数");
    });


    doSomeThing(function(){
        console.log("唱歌");
    });

    doSomeThing(function(){
        console.log("跳舞");
    }); */

    // 接收参数版
    // function doSomeThing(callback,params){  // callback形参 -> 接收实际参数(回调函数)    params传入回调函数的参数 
    //     // 形参引用该函数内存地址 => callback调用 => 执行了传入的函数

    //     console.log(callback,typeof callback);
    //     if(callback && typeof callback == "function"){ // callback需要传入一个函数
    //         callback(params);   // 调用了该函数 -> 传入实际参数
    //     }
    // }

    // doSomeThing(function(arg){  //形参 -> 表示此函数需要接收一个参数 
    //     console.log("唱歌:"+arg);
    // },"喜羊羊");

    // doSomeThing(function(arg){  //形参 -> 表示此函数需要接收一个参数 
    //     console.log("跳舞:"+arg);
    // }, "小天鹅");

    // doSomeThing(function(arg){  //形参 -> 表示此函数需要接收一个参数 
    //     console.log("Rap:"+arg);
    // }, "yo yo");





</script>
</html>